import chhol,cc9d
import time
# 这个文件是chhol.py使用的最简单的例子

# 定义收到包的处理函数
def _receivePkg(pkg: cc9d.sCc9dPkg):
    print(f"收到一个包: {pkg}")


def sendPkg():
    # 创建一个包
    pkg = cc9d.sCc9dPkg(1,2,0x0003)
    # 设置包的数据
    pkg.datas = [1,2,3,4]
    chhol.sendPkg(pkg)
    print(f"发送一个包: {pkg}")


def sendPkg2():
    pkg = cc9d.sCc9dPkg()
    # 也可以先创造包，再设定收发数据
    pkg.from_port = 1
    pkg.to_port = 2
    pkg.remote_addr = 0x0003
    pkg.datas = [5,6,7,8]
    chhol.sendPkg(pkg)
    print(f"发送一个包: {pkg}")

# 创建一个Chhol对象，指定串口号和收到包的处理函数
chhol = chhol.Chhol(port='COM54', recvPkgCB=_receivePkg)
# 以第二种方法发送一个包
sendPkg2()
second = 0   
# 不断接收串口数据
while True:
    time.sleep(0.05)
    # 必须时长调用receiveOnce()，会检查是否有数据等待接收。
    # 如果收到了完整的包，会在这个函数中调用_receivePkg()函数。
    # 如有必要，可以在另一个线程中持续执行receiveOnce()  
    chhol.receiveOnce()
    second += 0.05
    if second > 2:
        # 每隔一段时间，发送一个包，虽然设定了2秒，但实际上可能会有一点误差
        sendPkg()
        second-=2

